(function () {
      // 提取代码  父类
   // 定义一个Animal类
// 继承父类的方法属性     共同的 
// 子类中写自己特有的  子类中有的优先调用自己的。
class Animal{
     // 声明类型
     gname:string
     gage:number
     // 构造函数会在对象创建时调用
     constructor(gname:string,gage:number){
       
         // 赋值
         this.gname=gname
         this.gage=gage
     }
     sayHello(){
         alert('动物在叫')
     }
}
    // 立即执行函数 避免和别人冲突  函数作用域
    // 定义狗的类
    class Dog extends Animal{
        run(){
           console.log('狗子在跑。。');
            
        }
        // 重写父类的方法  
        sayHello(){
            alert('旺旺旺')
        }
    }
   const wangcai=new Dog('旺财',5)
   console.log(wangcai);
    wangcai.sayHello()
    wangcai.run()

    // 定义猫的类
    class Cat extends Animal{
       
    }
    const mimi =new Cat('咪咪',2)
    console.log(mimi);
    mimi.sayHello()


  
  

})()